import java.util.Scanner;

public class test1 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        String[] str = new String[n];
        System.out.println(longestCommonPrefix(str));
    }


    //方法1 : 两两对比
//    public static String longestCommonPrefix(String[] strs) {
//        int n = strs.length;
//        int index;
//        String result = strs[0];//先进行初始化,用这个来进行对比
//        for (int i = 1; i < n; i++) {
//            index = 0;//从第一个下角标来进行比对
//            StringBuilder flag= new StringBuilder();
//            while (index<result.length()&&index<strs[i].length()){
//                if(result.charAt(index)==strs[i].charAt(index)){
//                    flag.append(result.charAt(index));
//                }else{
//                    break;
//                }
//                index++;
//            }
//            //此时代表找到了这两个的相同数据
//            result=flag.toString();
//        }
//        return result;
//    }


    //方法2 : 全部对比
    public static String longestCommonPrefix(String[] strs) {
        int n = strs.length;
        int index=0;
        StringBuilder result = new StringBuilder();
        while (index<strs[0].length()){
            char ch = strs[0].charAt(index);
            //对其余字符串进行对比,同一下标的情况
            for (int i = 1; i < strs.length; i++) {
                if(index>=strs[i].length()||ch!=strs[i].charAt(index)){
                    //此时就该结束整个循环了,因为已经到最大值了
                    return result.toString();
                }
                //进行对比结束
            }
            result.append(ch);
            index++;
        }
        return result.toString();
    }
}
